package day12.abstractfactory;

import day12.abstractfactory.product1.Shape;
import day12.abstractfactory.product1.ShapeFactory;
import day12.abstractfactory.product2.Animal;
import day12.abstractfactory.product2.AnimalFactory;

/*
    1. 现在是怎么创建对象的？
       哪里要用就在哪里new
    2. 工厂模式的场景： 统一管理对象的创建。





* */
public class Test {
    public static void main(String[] args) {
        // 我要画正方形，所以要拿Shape形状工厂
        AbstractFactory factory = FactoryProducer.getFactory(FactoryProducer.FACTORY_SHAPE);
        // 拿到形状工厂后，再使用形状工厂获取正方形对象
        Shape shape = factory.getShape(ShapeFactory.SHAPE_SQUARE);
        // 使用正方形对象去画画
        shape.draw();
        // 我要🐖，所以要拿动物工厂
        AbstractFactory animalFactory = FactoryProducer.getFactory(FactoryProducer.FACTORY_ANIMAL);
        Animal animal = animalFactory.getAnimal(AnimalFactory.ANIMAL_PIG);
        animal.shout();
    }
}
